package cn.bytecollege.admin.service;

import cn.bytecollege.admin.dao.ProductDao;
import cn.bytecollege.common.entity.Page;
import cn.bytecollege.common.entity.Product;

import java.util.List;

/**
 * 商品的service层
 */
public class ProductService {
    private ProductDao productDao = null;
    public ProductService(){
        productDao = new ProductDao();
    }
    /**
     * 添加商品
     * @param product
     * @return
     */
    public int save(Product product) {
        return productDao.save(product);
    }
    /**
     * 添加商品之前要查看商品名称是否已经存在。
     * 这个方法不是重写的。
     * @param productName
     * @return
     */
    public Product findByProductName(String productName){
        return productDao.findByProductName(productName);
    }

    /**
     * 分页查询商品
     * @param pageIndex
     * @param pageSize
     * @return
     */
    public Page<Product> findListByPage(int pageIndex, int pageSize){
        List<Product> list = productDao.findListByPage(pageIndex,pageSize);
        //查询总条数
        int count = productDao.count();
        //封装Page对象
        Page<Product> page = new Page<>();
        page.setCurrentIndex(pageIndex);//当前页码
        page.setPageSize(pageSize);
        //计算总页数
        page.setTotalPage(count);
        //封装总条数
        page.setTotal(count);
        //封装数据
        page.setList(list);
        //封装页面显示的页面
        page.setPageIndex();
        return page;
    }
    /**
     * 商家查出自己的商品，
     * @param merchantId
     * @return
     */
    public Page<Product> findListByMerchantId(int merchantId,int pageIndex,int pageSize){
        List<Product> list = productDao.findListByMerchantId(merchantId,pageIndex,pageSize);
        //查询总条数
        int count = productDao.count(merchantId);
        //封装Page对象
        Page<Product> page = new Page<>();
        page.setCurrentIndex(pageIndex);//当前页码
        page.setPageSize(pageSize);
        //计算总页数
        page.setTotalPage(count);
        //封装总条数
        page.setTotal(count);
        //封装数据
        page.setList(list);
        //封装页面显示的页面
        page.setPageIndex();
        return page;
    }
    /**
     * 模糊查询用到。
     * @param merchantId
     * @param searchContent
     * @param pageIndex
     * @param pageSize
     * @return
     */
    public Page<Product> findProductListByProductNameLike
    (int merchantId,String searchContent,int pageIndex,int pageSize){
        List<Product> list = productDao.findProductListByProductNameLike(merchantId,
                searchContent,pageIndex,pageSize);
        //查询总条数
        int count = productDao.count(merchantId,searchContent,pageIndex,pageSize);
        //封装Page对象
        Page<Product> page = new Page<>();
        page.setCurrentIndex(pageIndex);//当前页码
        page.setPageSize(pageSize);
        //计算总页数
        page.setTotalPage(count);
        //封装总条数
        page.setTotal(count);
        //封装数据
        page.setList(list);
        //封装页面显示的页面
        page.setPageIndex();
        return page;
    }

    /**
     * 根据id查询分类，修改前需要回显数据，要显示该商品之前是什么类别的。
     * @param id
     * @return
     */
    public Product findClassifyById(Integer id){
        return productDao.findClassifyById(id);
    }
    /**
     * 商品修改
     * @param product
     * @return
     */
    public int updateProduct(Product product){
        return productDao.updateProduct(product);
    }

    /**
     * 商品删除，通过商品id物理删除。
     * @param productId
     * @return
     */
    public int deleteProductById(Integer productId){
        return productDao.deleteProductById(productId);
    }

    /**
     * 根据分类id查找商品
     *  @param classifyId
     *  @return
     */
    public List<Product> findProductByClassifyId(Integer classifyId){
        return productDao.findProductByClassifyId(classifyId);
    }
    /**
     * 根据Id查找商品
     */
    public Product findById(Integer integer) {
        return productDao.findById(integer);
    }
    /**
     * 查询所有的商品
     */
    public List<Product> findAll(){
        return productDao.findAll();
    }

}
